/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.losalpes.marketplace.pirfq.entities;

import co.com.losalpes.marketplace.pirfq.bos.FabricanteCotizacionBO;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/*
 @NamedQuery(name = "getPoFromNumSeguimiento", query = "select p from PurchaseOrder p where p.numSeguimiento = :numSeguimiento"),
 @NamedQuery(name = "getComercioFromPo", query = "select p.comercio from PurchaseOrder p where p.numSeguimiento = :numSeguimiento"),
 @NamedQuery(name = "getPOsComercio", query = "select po from PurchaseOrder po where po.comercio.nit = :nit")
 */
/**
 *
 * @author marketplace
 */
@Entity
@NamedQueries({
    @NamedQuery(name = "obtenerCotizacionesFabricanteEstado", query = "SELECT FC FROM FabricanteCotizacion FC WHERE FC.id_fabricante = :id_fabricante AND FC.estado = :estado"),
    @NamedQuery(name = "getOfertaFabricante", query = "SELECT FC FROM FabricanteCotizacion FC WHERE FC.id_cotizacion = :idCotizacion"),
    @NamedQuery(name = "getOfertaFabricanteByID", query = "SELECT FC FROM FabricanteCotizacion FC WHERE FC.id_cotizacion = :idCotizacion AND FC.id_fabricante = :idFabricante")
})
@IdClass(FabricanteCotizacionId.class)
public class FabricanteCotizacion implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @AttributeOverrides({
        @AttributeOverride(name = "id_cotizacion",
                column =
                @Column(name = "id_cotizacion")),
        @AttributeOverride(name = "id_fabricante",
                column =
                @Column(name = "id_fabricante"))
    })
    private Long id_cotizacion;
    private Long id_fabricante;
    @Column
    private Long precio;
    @Column
    private int cantidad;
    @Column
    @Temporal(TemporalType.DATE)
    private Date fecha_entrega;
    /**
     * ABIERTA RESPONDIDA RECHAZADA
     */
    private String estado;

    public FabricanteCotizacion() {
    }

    /**
     * BO Constructor
     */
    public FabricanteCotizacion(FabricanteCotizacionBO fabricanteCotizacionBO) {
        this.setCantidad(fabricanteCotizacionBO.getCantidad());
        this.setEstado(fabricanteCotizacionBO.getEstado());
        this.setFecha_entrega(fabricanteCotizacionBO.getFecha_entrega());
        this.setId_cotizacion(fabricanteCotizacionBO.getId_cotizacion());
        this.setId_fabricante(fabricanteCotizacionBO.getId_fabricante());
        this.setPrecio(fabricanteCotizacionBO.getPrecio());
    }

    /**
     * Converts the current entity to its BO
     *
     * @param Integer gets the bo tree in depth
     */
    public FabricanteCotizacionBO toBO() {

        FabricanteCotizacionBO fabricanteCotizacionBO = new FabricanteCotizacionBO();

        fabricanteCotizacionBO.setCantidad(this.getCantidad());
        fabricanteCotizacionBO.setEstado(this.getEstado());
        fabricanteCotizacionBO.setFecha_entrega(this.getFecha_entrega());
        fabricanteCotizacionBO.setId_cotizacion(this.getId_cotizacion());
        fabricanteCotizacionBO.setId_fabricante(this.getId_fabricante());
        fabricanteCotizacionBO.setPrecio(this.getPrecio());

        return fabricanteCotizacionBO;
    }

    public FabricanteCotizacion(Long id_cotizacion, Long id_fabricante, String estado) {
        this.id_cotizacion = id_cotizacion;
        this.id_fabricante = id_fabricante;
        this.estado = estado;
    }

    public int getCantidad() {
        return cantidad;
    }

    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public Date getFecha_entrega() {
        return fecha_entrega;
    }

    public void setFecha_entrega(Date fecha_entrega) {
        this.fecha_entrega = fecha_entrega;
    }

    public Long getId_cotizacion() {
        return id_cotizacion;
    }

    public void setId_cotizacion(Long id_cotizacion) {
        this.id_cotizacion = id_cotizacion;
    }

    public Long getId_fabricante() {
        return id_fabricante;
    }

    public void setId_fabricante(Long id_fabricante) {
        this.id_fabricante = id_fabricante;
    }

    public Long getPrecio() {
        return precio;
    }

    public void setPrecio(Long precio) {
        this.precio = precio;
    }

    @Override
    public String toString() {
        return "co.com.losalpes.marketplace.pirfq.entities.FabricanteCotizacion[id=" + id_cotizacion + "]";
    }
}
